Ruby 日記 18日目: 正規表現
次のコードを実行するとどうなりますか
code:gold/ex18/main.rb
p "Matz is my tEacher"[/a-zA-Z.*/] 選択肢:
"tEacher"が表示される
" tEacher"が表示される
"tE"が表示される
" tE"が表示される
解説:
self[regexp, nth = 0] -> String[permalink][rdoc]
slice(regexp, nth = 0) -> String
正規表現 regexp の nth 番目の括弧にマッチする最初の部分文字列を返します。 nth を省略したときや 0 の場合は正規表現がマッチした部分文字列全体を返します。 正規表現が self にマッチしなかった場合や nth に対応する括弧がないときは nil を返します。
つまり、今回の問題では正規表現/[a-z][A-Z].*/にマッチした部分文字列全体を返す、ということだね。
. は任意の1文字
メタ文字 . は改行を除く任意の1文字にマッチします。
* は0回以上
* 0回以上
すなわち、 「半角小文字1文字」「半角大文字1文字」「任意の文字を0回以上繰り返し」の順で表現される文字列
正解は「"tEacher"が表示される」だね
code:sh
# ruby gold/ex18/main.rb
"tEacher"